
typedef
ULONG
(__fastcall
*PFN_DOROP)(ULONG D, ULONG S, ULONG P);

extern const PFN_DOROP gapfnRop[256];

#define ROP_0(D,S,P) 0 /* BLACKNESS */
#define ROP_DPSoon(D,S,P) (~((D)|((P)|(S))))
#define ROP_DPSona(D,S,P) ((D)&(~((P)|(S))))
#define ROP_PSon(D,S,P) (~((P)|(S)))
#define ROP_SDPona(D,S,P) ((S)&(~((D)|(P))))
#define ROP_DPon(D,S,P) (~((D)|(P)))
#define ROP_PDSxnon(D,S,P) (~((P)|(~((D)^(S)))))
#define ROP_PDSaon(D,S,P) (~((P)|((D)&(S))))
#define ROP_SDPnaa(D,S,P) ((S)&((D)&(~(P))))
#define ROP_PDSxon(D,S,P) (~((P)|((D)^(S))))
#define ROP_DPna(D,S,P) ((D)&(~(P)))
#define ROP_PSDnaon(D,S,P) (~((P)|((S)&(~(D)))))
#define ROP_SPna(D,S,P) ((S)&(~(P)))
#define ROP_PDSnaon(D,S,P) (~((P)|((D)&(~(S)))))
#define ROP_PDSonon(D,S,P) (~((P)|(~((D)|(S)))))
#define ROP_Pn(D,S,P) (~(P))
#define ROP_PDSona(D,S,P) ((P)&(~((D)|(S))))
#define ROP_DSon(D,S,P) (~((D)|(S))) /* NOTSRCERASE */
#define ROP_SDPxnon(D,S,P) (~((S)|(~((D)^(P)))))
#define ROP_SDPaon(D,S,P) (~((S)|((D)&(P))))
#define ROP_DPSxnon(D,S,P) (~((D)|(~((P)^(S)))))
#define ROP_DPSaon(D,S,P) (~((D)|((P)&(S))))
#define ROP_PSDPSanaxx(D,S,P) ((P)^((S)^((D)&(~((P)&(S))))))
#define ROP_SSPxDSxaxn(D,S,P) (~((S)^(((S)^(P))&((D)^(S)))))
#define ROP_SPxPDxa(D,S,P) (((S)^(P))&((P)^(D)))
#define ROP_SDPSanaxn(D,S,P) (~((S)^((D)&(~((P)&(S))))))
#define ROP_PDSPaox(D,S,P) ((P)^((D)|((S)&(P))))
#define ROP_SDPSxaxn(D,S,P) (~((S)^((D)&((P)^(S)))))
#define ROP_PSDPaox(D,S,P) ((P)^((S)|((D)&(P))))
#define ROP_DSPDxaxn(D,S,P) (~((D)^((S)&((P)^(D)))))
#define ROP_PDSox(D,S,P) ((P)^((D)|(S)))
#define ROP_PDSoan(D,S,P) (~((P)&((D)|(S))))
#define ROP_DPSnaa(D,S,P) ((D)&((P)&(~(S))))
#define ROP_SDPxon(D,S,P) (~((S)|((D)^(P))))
#define ROP_DSna(D,S,P) ((D)&(~(S)))
#define ROP_SPDnaon(D,S,P) (~((S)|((P)&(~(D)))))
#define ROP_SPxDSxa(D,S,P) (((S)^(P))&((D)^(S)))
#define ROP_PDSPanaxn(D,S,P) (~((P)^((D)&(~((S)&(P))))))
#define ROP_SDPSaox(D,S,P) ((S)^((D)|((P)&(S))))
#define ROP_SDPSxnox(D,S,P) ((S)^((D)|(~((P)^(S)))))
#define ROP_DPSxa(D,S,P) ((D)&((P)^(S)))
#define ROP_PSDPSaoxxn(D,S,P) (~((P)^((S)^((D)|((P)&(S))))))
#define ROP_DPSana(D,S,P) ((D)&(~((P)&(S))))
#define ROP_SSPxPDxaxn(D,S,P) (~((S)^(((S)^(P))&((P)^(D)))))
#define ROP_SPDSoax(D,S,P) ((S)^((P)&((D)|(S))))
#define ROP_PSDnox(D,S,P) ((P)^((S)|(~(D))))
#define ROP_PSDPxox(D,S,P) ((P)^((S)|((D)^(P))))
#define ROP_PSDnoan(D,S,P) (~((P)&((S)|(~(D)))))
#define ROP_PSna(D,S,P) ((P)&(~(S)))
#define ROP_SDPnaon(D,S,P) (~((S)|((D)&(~(P)))))
#define ROP_SDPSoox(D,S,P) ((S)^((D)|((P)|(S))))
#define ROP_Sn(D,S,P) (~(S)) /* NOTSRCCOPY */
#define ROP_SPDSaox(D,S,P) ((S)^((P)|((D)&(S))))
#define ROP_SPDSxnox(D,S,P) ((S)^((P)|(~((D)^(S)))))
#define ROP_SDPox(D,S,P) ((S)^((D)|(P)))
#define ROP_SDPoan(D,S,P) (~((S)&((D)|(P))))
#define ROP_PSDPoax(D,S,P) ((P)^((S)&((D)|(P))))
#define ROP_SPDnox(D,S,P) ((S)^((P)|(~(D))))
#define ROP_SPDSxox(D,S,P) ((S)^((P)|((D)^(S))))
#define ROP_SPDnoan(D,S,P) (~((S)&((P)|(~(D)))))
#define ROP_PSx(D,S,P) ((P)^(S))
#define ROP_SPDSonox(D,S,P) ((S)^((P)|(~((D)|(S)))))
#define ROP_SPDSnaox(D,S,P) ((S)^((P)|((D)&(~(S)))))
#define ROP_PSan(D,S,P) (~((P)&(S)))
#define ROP_PSDnaa(D,S,P) ((P)&((S)&(~(D))))
#define ROP_DPSxon(D,S,P) (~((D)|((P)^(S))))
#define ROP_SDxPDxa(D,S,P) (((S)^(D))&((P)^(D)))
#define ROP_SPDSanaxn(D,S,P) (~((S)^((P)&(~((D)&(S))))))
#define ROP_SDna(D,S,P) ((S)&(~(D))) /* SRCERASE */
#define ROP_DPSnaon(D,S,P) (~((D)|((P)&(~(S)))))
#define ROP_DSPDaox(D,S,P) ((D)^((S)|((P)&(D))))
#define ROP_PSDPxaxn(D,S,P) (~((P)^((S)&((D)^(P)))))
#define ROP_SDPxa(D,S,P) ((S)&((D)^(P)))
#define ROP_PDSPDaoxxn(D,S,P) (~((P)^((D)^((S)|((P)&(D))))))
#define ROP_DPSDoax(D,S,P) ((D)^((P)&((S)|(D))))
#define ROP_PDSnox(D,S,P) ((P)^((D)|(~(S))))
#define ROP_SDPana(D,S,P) ((S)&(~((D)&(P))))
#define ROP_SSPxDSxoxn(D,S,P) (~((S)^(((S)^(P))|((D)^(S)))))
#define ROP_PDSPxox(D,S,P) ((P)^((D)|((S)^(P))))
#define ROP_PDSnoan(D,S,P) (~((P)&((D)|(~(S)))))
#define ROP_PDna(D,S,P) ((P)&(~(D)))
#define ROP_DSPnaon(D,S,P) (~((D)|((S)&(~(P)))))
#define ROP_DPSDaox(D,S,P) ((D)^((P)|((S)&(D))))
#define ROP_SPDSxaxn(D,S,P) (~((S)^((P)&((D)^(S)))))
#define ROP_DPSonon(D,S,P) (~((D)|(~((P)|(S)))))
#define ROP_Dn(D,S,P) (~(D)) /* DSTINVERT */
#define ROP_DPSox(D,S,P) ((D)^((P)|(S)))
#define ROP_DPSoan(D,S,P) (~((D)&((P)|(S))))
#define ROP_PDSPoax(D,S,P) ((P)^((D)&((S)|(P))))
#define ROP_DPSnox(D,S,P) ((D)^((P)|(~(S))))
#define ROP_DPx(D,S,P) ((D)^(P)) /* PATINVERT */
#define ROP_DPSDonox(D,S,P) ((D)^((P)|(~((S)|(D)))))
#define ROP_DPSDxox(D,S,P) ((D)^((P)|((S)^(D))))
#define ROP_DPSnoan(D,S,P) (~((D)&((P)|(~(S)))))
#define ROP_DPSDnaox(D,S,P) ((D)^((P)|((S)&(~(D)))))
#define ROP_DPan(D,S,P) (~((D)&(P)))
#define ROP_PDSxa(D,S,P) ((P)&((D)^(S)))
#define ROP_DSPDSaoxxn(D,S,P) (~((D)^((S)^((P)|((D)&(S))))))
#define ROP_DSPDoax(D,S,P) ((D)^((S)&((P)|(D))))
#define ROP_SDPnox(D,S,P) ((S)^((D)|(~(P))))
#define ROP_SDPSoax(D,S,P) ((S)^((D)&((P)|(S))))
#define ROP_DSPnox(D,S,P) ((D)^((S)|(~(P))))
#define ROP_DSx(D,S,P) ((D)^(S)) /* SRCINVERT */
#define ROP_SDPSonox(D,S,P) ((S)^((D)|(~((P)|(S)))))
#define ROP_DSPDSonoxxn(D,S,P) (~((D)^((S)^((P)|(~((D)|(S)))))))
#define ROP_PDSxxn(D,S,P) (~((P)^((D)^(S))))
#define ROP_DPSax(D,S,P) ((D)^((P)&(S)))
#define ROP_PSDPSoaxxn(D,S,P) (~((P)^((S)^((D)&((P)|(S))))))
#define ROP_SDPax(D,S,P) ((S)^((D)&(P)))
#define ROP_PDSPDoaxxn(D,S,P) (~((P)^((D)^((S)&((P)|(D))))))
#define ROP_SDPSnoax(D,S,P) ((S)^((D)&((P)|(~(S)))))
#define ROP_PDSxnan(D,S,P) (~((P)&(~((D)^(S)))))
#define ROP_PDSana(D,S,P) ((P)&(~((D)&(S))))
#define ROP_SSDxPDxaxn(D,S,P) (~((S)^(((S)^(D))&((P)^(D)))))
#define ROP_SDPSxox(D,S,P) ((S)^((D)|((P)^(S))))
#define ROP_SDPnoan(D,S,P) (~((S)&((D)|(~(P)))))
#define ROP_DSPDxox(D,S,P) ((D)^((S)|((P)^(D))))
#define ROP_DSPnoan(D,S,P) (~((D)&((S)|(~(P)))))
#define ROP_SDPSnaox(D,S,P) ((S)^((D)|((P)&(~(S)))))
#define ROP_DSan(D,S,P) (~((D)&(S)))
#define ROP_PDSax(D,S,P) ((P)^((D)&(S)))
#define ROP_DSPDSoaxxn(D,S,P) (~((D)^((S)^((P)&((D)|(S))))))
#define ROP_DPSDnoax(D,S,P) ((D)^((P)&((S)|(~(D)))))
#define ROP_SDPxnan(D,S,P) (~((S)&(~((D)^(P)))))
#define ROP_SPDSnoax(D,S,P) ((S)^((P)&((D)|(~(S)))))
#define ROP_DPSxnan(D,S,P) (~((D)&(~((P)^(S)))))
#define ROP_SPxDSxo(D,S,P) (((S)^(P))|((D)^(S)))
#define ROP_DPSaan(D,S,P) (~((D)&((P)&(S))))
#define ROP_DPSaa(D,S,P) ((D)&((P)&(S)))
#define ROP_SPxDSxon(D,S,P) (~(((S)^(P))|((D)^(S))))
#define ROP_DPSxna(D,S,P) ((D)&(~((P)^(S))))
#define ROP_SPDSnoaxn(D,S,P) (~((S)^((P)&((D)|(~(S))))))
#define ROP_SDPxna(D,S,P) ((S)&(~((D)^(P))))
#define ROP_PDSPnoaxn(D,S,P) (~((P)^((D)&((S)|(~(P))))))
#define ROP_DSPDSoaxx(D,S,P) ((D)^((S)^((P)&((D)|(S)))))
#define ROP_PDSaxn(D,S,P) (~((P)^((D)&(S))))
#define ROP_DSa(D,S,P) ((D)&(S)) /* SRCAND */
#define ROP_SDPSnaoxn(D,S,P) (~((S)^((D)|((P)&(~(S))))))
#define ROP_DSPnoa(D,S,P) ((D)&((S)|(~(P))))
#define ROP_DSPDxoxn(D,S,P) (~((D)^((S)|((P)^(D)))))
#define ROP_SDPnoa(D,S,P) ((S)&((D)|(~(P))))
#define ROP_SDPSxoxn(D,S,P) (~((S)^((D)|((P)^(S)))))
#define ROP_SSDxPDxax(D,S,P) ((S)^(((S)^(D))&((P)^(D))))
#define ROP_PDSanan(D,S,P) (~((P)&(~((D)&(S)))))
#define ROP_PDSxna(D,S,P) ((P)&(~((D)^(S))))
#define ROP_SDPSnoaxn(D,S,P) (~((S)^((D)&((P)|(~(S))))))
#define ROP_DPSDPoaxx(D,S,P) ((D)^((P)^((S)&((D)|(P)))))
#define ROP_SPDaxn(D,S,P) (~((S)^((P)&(D))))
#define ROP_PSDPSoaxx(D,S,P) ((P)^((S)^((D)&((P)|(S)))))
#define ROP_DPSaxn(D,S,P) (~((D)^((P)&(S))))
#define ROP_DPSxx(D,S,P) ((D)^((P)^(S)))
#define ROP_PSDPSonoxx(D,S,P) ((P)^((S)^((D)|(~((P)|(S))))))
#define ROP_SDPSonoxn(D,S,P) (~((S)^((D)|(~((P)|(S))))))
#define ROP_DSxn(D,S,P) (~((D)^(S)))
#define ROP_DPSnax(D,S,P) ((D)^((P)&(~(S))))
#define ROP_SDPSoaxn(D,S,P) (~((S)^((D)&((P)|(S)))))
#define ROP_SPDnax(D,S,P) ((S)^((P)&(~(D))))
#define ROP_DSPDoaxn(D,S,P) (~((D)^((S)&((P)|(D)))))
#define ROP_DSPDSaoxx(D,S,P) ((D)^((S)^((P)|((D)&(S)))))
#define ROP_PDSxan(D,S,P) (~((P)&((D)^(S))))
#define ROP_DPa(D,S,P) ((D)&(P))
#define ROP_PDSPnaoxn(D,S,P) (~((P)^((D)|((S)&(~(P))))))
#define ROP_DPSnoa(D,S,P) ((D)&((P)|(~(S))))
#define ROP_DPSDxoxn(D,S,P) (~((D)^((P)|((S)^(D)))))
#define ROP_PDSPonoxn(D,S,P) (~((P)^((D)|(~((S)|(P))))))
#define ROP_PDxn(D,S,P) (~((P)^(D)))
#define ROP_DSPnax(D,S,P) ((D)^((S)&(~(P))))
#define ROP_PDSPoaxn(D,S,P) (~((P)^((D)&((S)|(P)))))
#define ROP_DPSoa(D,S,P) ((D)&((P)|(S)))
#define ROP_DPSoxn(D,S,P) (~((D)^((P)|(S))))
#define ROP_D(D,S,P) (D)
#define ROP_DPSono(D,S,P) ((D)|(~((P)|(S))))
#define ROP_SPDSxax(D,S,P) ((S)^((P)&((D)^(S))))
#define ROP_DPSDaoxn(D,S,P) (~((D)^((P)|((S)&(D)))))
#define ROP_DSPnao(D,S,P) ((D)|((S)&(~(P))))
#define ROP_DPno(D,S,P) ((D)|(~(P)))
#define ROP_PDSnoa(D,S,P) ((P)&((D)|(~(S))))
#define ROP_PDSPxoxn(D,S,P) (~((P)^((D)|((S)^(P)))))
#define ROP_SSPxDSxox(D,S,P) ((S)^(((S)^(P))|((D)^(S))))
#define ROP_SDPanan(D,S,P) (~((S)&(~((D)&(P)))))
#define ROP_PSDnax(D,S,P) ((P)^((S)&(~(D))))
#define ROP_DPSDoaxn(D,S,P) (~((D)^((P)&((S)|(D)))))
#define ROP_DPSDPaoxx(D,S,P) ((D)^((P)^((S)|((D)&(P)))))
#define ROP_SDPxan(D,S,P) (~((S)&((D)^(P))))
#define ROP_PSDPxax(D,S,P) ((P)^((S)&((D)^(P))))
#define ROP_DSPDaoxn(D,S,P) (~((D)^((S)|((P)&(D)))))
#define ROP_DPSnao(D,S,P) ((D)|((P)&(~(S))))
#define ROP_DSno(D,S,P) ((D)|(~(S))) /* MERGEPAINT */
#define ROP_SPDSanax(D,S,P) ((S)^((P)&(~((D)&(S)))))
#define ROP_SDxPDxan(D,S,P) (~(((S)^(D))&((P)^(D))))
#define ROP_DPSxo(D,S,P) ((D)|((P)^(S)))
#define ROP_DPSano(D,S,P) ((D)|(~((P)&(S))))
#define ROP_PSa(D,S,P) ((P)&(S)) /* MERGECOPY */
#define ROP_SPDSnaoxn(D,S,P) (~((S)^((P)|((D)&(~(S))))))
#define ROP_SPDSonoxn(D,S,P) (~((S)^((P)|(~((D)|(S))))))
#define ROP_PSxn(D,S,P) (~((P)^(S)))
#define ROP_SPDnoa(D,S,P) ((S)&((P)|(~(D))))
#define ROP_SPDSxoxn(D,S,P) (~((S)^((P)|((D)^(S)))))
#define ROP_SDPnax(D,S,P) ((S)^((D)&(~(P))))
#define ROP_PSDPoaxn(D,S,P) (~((P)^((S)&((D)|(P)))))
#define ROP_SDPoa(D,S,P) ((S)&((D)|(P)))
#define ROP_SPDoxn(D,S,P) (~((S)^((P)|(D))))
#define ROP_DPSDxax(D,S,P) ((D)^((P)&((S)^(D))))
#define ROP_SPDSaoxn(D,S,P) (~((S)^((P)|((D)&(S)))))
#define ROP_S(D,S,P) (S) /* SRCCOPY */
#define ROP_SDPono(D,S,P) ((S)|(~((D)|(P))))
#define ROP_SDPnao(D,S,P) ((S)|((D)&(~(P))))
#define ROP_SPno(D,S,P) ((S)|(~(P)))
#define ROP_PSDnoa(D,S,P) ((P)&((S)|(~(D))))
#define ROP_PSDPxoxn(D,S,P) (~((P)^((S)|((D)^(P)))))
#define ROP_PDSnax(D,S,P) ((P)^((D)&(~(S))))
#define ROP_SPDSoaxn(D,S,P) (~((S)^((P)&((D)|(S)))))
#define ROP_SSPxPDxax(D,S,P) ((S)^(((S)^(P))&((P)^(D))))
#define ROP_DPSanan(D,S,P) (~((D)&(~((P)&(S)))))
#define ROP_PSDPSaoxx(D,S,P) ((P)^((S)^((D)|((P)&(S)))))
#define ROP_DPSxan(D,S,P) (~((D)&((P)^(S))))
#define ROP_PDSPxax(D,S,P) ((P)^((D)&((S)^(P))))
#define ROP_SDPSaoxn(D,S,P) (~((S)^((D)|((P)&(S)))))
#define ROP_DPSDanax(D,S,P) ((D)^((P)&(~((S)&(D)))))
#define ROP_SPxDSxan(D,S,P) (~(((S)^(P))&((D)^(S))))
#define ROP_SPDnao(D,S,P) ((S)|((P)&(~(D))))
#define ROP_SDno(D,S,P) ((S)|(~(D)))
#define ROP_SDPxo(D,S,P) ((S)|((D)^(P)))
#define ROP_SDPano(D,S,P) ((S)|(~((D)&(P))))
#define ROP_PDSoa(D,S,P) ((P)&((D)|(S)))
#define ROP_PDSoxn(D,S,P) (~((P)^((D)|(S))))
#define ROP_DSPDxax(D,S,P) ((D)^((S)&((P)^(D))))
#define ROP_PSDPaoxn(D,S,P) (~((P)^((S)|((D)&(P)))))
#define ROP_SDPSxax(D,S,P) ((S)^((D)&((P)^(S))))
#define ROP_PDSPaoxn(D,S,P) (~((P)^((D)|((S)&(P)))))
#define ROP_SDPSanax(D,S,P) ((S)^((D)&(~((P)&(S)))))
#define ROP_SPxPDxan(D,S,P) (~(((S)^(P))&((P)^(D))))
#define ROP_SSPxDSxax(D,S,P) ((S)^(((S)^(P))&((D)^(S))))
#define ROP_DSPDSanaxxn(D,S,P) (~((D)^((S)^((P)&(~((D)&(S)))))))
#define ROP_DPSao(D,S,P) ((D)|((P)&(S)))
#define ROP_DPSxno(D,S,P) ((D)|(~((P)^(S))))
#define ROP_SDPao(D,S,P) ((S)|((D)&(P)))
#define ROP_SDPxno(D,S,P) ((S)|(~((D)^(P))))
#define ROP_DSo(D,S,P) ((D)|(S)) /* SRCPAINT */
#define ROP_SDPnoo(D,S,P) ((S)|((D)|(~(P))))
#define ROP_P(D,S,P) (P) /* PATCOPY */
#define ROP_PDSono(D,S,P) ((P)|(~((D)|(S))))
#define ROP_PDSnao(D,S,P) ((P)|((D)&(~(S))))
#define ROP_PSno(D,S,P) ((P)|(~(S)))
#define ROP_PSDnao(D,S,P) ((P)|((S)&(~(D))))
#define ROP_PDno(D,S,P) ((P)|(~(D)))
#define ROP_PDSxo(D,S,P) ((P)|((D)^(S)))
#define ROP_PDSano(D,S,P) ((P)|(~((D)&(S))))
#define ROP_PDSao(D,S,P) ((P)|((D)&(S)))
#define ROP_PDSxno(D,S,P) ((P)|(~((D)^(S))))
#define ROP_DPo(D,S,P) ((D)|(P))
#define ROP_DPSnoo(D,S,P) ((D)|((P)|(~(S)))) /* PATPAINT */
#define ROP_PSo(D,S,P) ((P)|(S))
#define ROP_PSDnoo(D,S,P) ((P)|((S)|(~(D))))
#define ROP_DPSoo(D,S,P) ((D)|((P)|(S)))
#define ROP_1(D,S,P) 1 /* WHITENESS */

#define ROP_BLACKNESS ROP_0
#define ROP_NOTSRCERASE ROP_DSon
#define ROP_NOTSRCCOPY ROP_Sn
#define ROP_SRCERASE ROP_SDna
#define ROP_DSTINVERT ROP_Dn
#define ROP_PATINVERT ROP_DPx
#define ROP_SRCINVERT ROP_DSx
#define ROP_SRCAND ROP_DSa
#define ROP_MERGEPAINT ROP_DSno
#define ROP_MERGECOPY ROP_PSa
#define ROP_SRCCOPY ROP_S
#define ROP_SRCPAINT ROP_DSo
#define ROP_PATCOPY ROP_P
#define ROP_PATPAINT ROP_DPSnoo
#define ROP_WHITENESS ROP_1


